/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.hochschild.sgv.service.implementacion;

import com.hochschild.sgv.dao.ReportePlanificacionDao;
import com.hochschild.sgv.domain.FiltroReporte;
import com.hochschild.sgv.domain.Reporte;
import com.hochschild.sgv.sap.ConexionSAP;
import com.hochschild.sgv.service.ReportePlanificacionManager;
import com.hochschild.sgv.util.FechaUtil;
import com.sap.mw.jco.JCO.Table;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Service;

/**
 *
 * @author LENOVO
 */

@Service
public class SimpleReportePlanificacionManager implements ReportePlanificacionManager {
    private ReportePlanificacionDao reportePlanificacionDao;

    public List<Reporte> getVacacionesPlanificadas(FiltroReporte filtro) {
        return getReportePlanificacionDao().getVacacionesPlanificadas(filtro);
    }

    public ReportePlanificacionDao getReportePlanificacionDao() {
        return reportePlanificacionDao;
    }

    public void setReportePlanificacionDao(ReportePlanificacionDao reportePlanificacionDao) {
        this.reportePlanificacionDao = reportePlanificacionDao;
    }

    public List<Reporte> getSaldoVacaciones(FiltroReporte filtro){
        List<Reporte> lstReporte = new ArrayList<Reporte>();
        ConexionSAP conexionSAP = new ConexionSAP();
        Reporte reporte = null;
            System.out.println("BUKRS: " + filtro.getIdSociedad() + " WERKS: " + filtro.getIdDivision() + " BTRTL: " + filtro.getIdSubDivision() + " COLAB: " + filtro.getApellidoColaborador() + " APROB: " + filtro.getApellidoAprobador() );
        try{
            conexionSAP = ConexionSAP.getConexionSAP();

            conexionSAP.RegistrarRFC("ZMM_RFCFN_REP_SALDODIAVAC_SGV");
            conexionSAP.IngresarDatosInput(filtro.getIdSociedad(), "BUKRS");
            conexionSAP.IngresarDatosInput(filtro.getIdDivision(), "WERKS");
            conexionSAP.IngresarDatosInput(filtro.getIdSubDivision(), "BTRTL");
            conexionSAP.IngresarDatosInput(filtro.getApellidoColaborador(), "COLAB");
            conexionSAP.IngresarDatosInput(filtro.getApellidoAprobador(), "APROB");
            
            conexionSAP.EjecutarRFC();
            Table table = conexionSAP.rFC.getTableParameterList().getTable("T_REPORTE");

            for (int i = 0; i < table.getNumRows(); i++) {
                table.setRow(i);
                reporte = new Reporte();
                reporte.setNombreColaborador(table.getField("NOMCOLAB").getString().toUpperCase());
                reporte.setPuestoColaborador(table.getField("PLSTXC").getString().toUpperCase());
                reporte.setNombreAprobador(table.getField("NOMAPROB").getString().toUpperCase());
                reporte.setPuestoAprobador(table.getField("PLSTXA").getString().toUpperCase());
                reporte.setAreaColaborador(table.getField("BTEXT").getString().toUpperCase());
                reporte.setNumeroDias( String.valueOf(table.getField("DIASSALDO").getInt()));
                    System.out.println(" NOMCOLAB: " + table.getField("NOMCOLAB").getString() + " PLSTXC: " + table.getField("PLSTXC").getString() + " NOMAPROB: " + table.getField("NOMAPROB").getString() + " PLSTXA: " + table.getField("PLSTXA").getString() + " BTEXT: " + table.getField("BTEXT").getString() + " DIASSALDO: " + String.valueOf(table.getField("DIASSALDO").getInt()));
                lstReporte.add(reporte);
            }
        }
        catch(Exception e){
            e.printStackTrace();
        }

        return lstReporte;
    }
//Reporte de VAcaciones Editar
    public List<Reporte> getVacacionesRegistradas(FiltroReporte filtro){
        List<Reporte> lstReporte = new ArrayList<Reporte>();
        ConexionSAP conexionSAP = new ConexionSAP();
        Reporte reporte = null;
        System.out.println("BUKRS: " + filtro.getIdSociedad() + " WERKS: " + filtro.getIdDivision() + " BTRTL: " + filtro.getIdSubDivision() + " COLAB: " + filtro.getApellidoColaborador() + " APROB: " + filtro.getApellidoAprobador() );
        System.out.println("filtro.getFechaInicio(): " + filtro.getFechaInicio() + " filtro.getFechaFin(): " + filtro.getFechaFin());
        try{
            conexionSAP = ConexionSAP.getConexionSAP();

            conexionSAP.RegistrarRFC("ZMM_RFCFN_REP_REGISTROVAC_SGV");
            conexionSAP.IngresarDatosInput(filtro.getIdSociedad(), "BUKRS");
            conexionSAP.IngresarDatosInput(filtro.getIdDivision(), "WERKS");
            conexionSAP.IngresarDatosInput(filtro.getIdSubDivision(), "BTRTL");
            conexionSAP.IngresarDatosInput(filtro.getApellidoColaborador(), "COLAB");
            conexionSAP.IngresarDatosInput(filtro.getApellidoAprobador(), "APROB");

            conexionSAP.IngresarDatosInput(filtro.getFechaInicio(), "FECHAINI");
            conexionSAP.IngresarDatosInput(filtro.getFechaFin(), "FECHAFIN");
            
            
            conexionSAP.EjecutarRFC();
            Table table = conexionSAP.rFC.getTableParameterList().getTable("T_REPORTE");

            for (int i = 0; i < table.getNumRows(); i++) {
                table.setRow(i);
                reporte = new Reporte();
                reporte.setNombreColaborador(table.getField("NOMCOLAB").getString());
                reporte.setPuestoColaborador(table.getField("PLSTXC").getString());
                reporte.setNombreAprobador(table.getField("NOMAPROB").getString());
                reporte.setPuestoAprobador(table.getField("PLSTXA").getString());
                reporte.setAreaColaborador(table.getField("BTEXT").getString());
                reporte.setFechaInicio(table.getField("FECHAINI").getString());
                reporte.setFechaFin(table.getField("FECHAFIN").getString());
                reporte.setNumeroDias( String.valueOf(table.getField("NDIAS").getInt()));
                    System.out.println("------reporte.getFechaInicioSAP: " + reporte.getFechaInicio() + " reporte.getFechaFinSAP: " + reporte.getFechaFin());
                if ("0000-00-00".equals(reporte.getFechaInicio()) || "0000-00-00".equals(reporte.getFechaFin()) || reporte.getFechaInicio().equals("") || reporte.getFechaFin().equals("") ){
                    reporte.setFechaInicio("");
                    reporte.setFechaFin("");
                }
                else{    
                    reporte.setFechaInicio(FechaUtil.formatoYYYYMMDD_DDMMYYYY(reporte.getFechaInicio()).replaceAll("-", "/"));
                    reporte.setFechaFin(FechaUtil.formatoYYYYMMDD_DDMMYYYY(reporte.getFechaFin()).replaceAll("-", "/"));
                    System.out.println("reporte.getFechaInicio: " + reporte.getFechaInicio() + " reporte.getFechaFin: " + reporte.getFechaFin());
                    lstReporte.add(reporte);
                }
                   
            }
        }
        catch(Exception e){
            e.printStackTrace();
        }

        return lstReporte;
    }
    
    public List<Reporte> getStatusPlanificadas(FiltroReporte filtro) {
        return getReportePlanificacionDao().getStatusPlanificadas(filtro);
    }
}